package Authorization;

import Session.TestSession;
import Xml.DOMUserSessionParser;
import Xml.XmlUserWriter;

import java.io.*;
import java.util.ArrayList;
import java.util.List;

/**
 * Created by:
 * User: Igor Martynovich and Guzenko Igor
 * Date: 27.10.13
 */
public class UserStorage {
    private List<User> userList = new ArrayList<>();

    /**
     *
     * @throws IOException
     */
    public UserStorage(ArrayList<User> allUsers){
        this.userList = allUsers;
    }

    /**
     * Проверяет есть ли такой пользователь в системе
     * @param user неавторизированный юзер
     * @return авторизировать или нет
     */
    public boolean isUserValid(User user) {
        for (int line = 0; line < userList.size(); line++) {
            if (user.equals(userList.get(line))) {
                return true;
            }
        }
        return false;
    }

    /**
     * Записывает нового пользователя в файл
     * @param user пользователь которого сейвим
     * @throws IOException
     */
    public void createUser(User user){
        XmlUserWriter userWriter = new XmlUserWriter();
        userWriter.addNewUser(user.getLogin(),user.getPassword());
    }

    /**
     * Метод проверяет есть ли уже такой логин в системе. Проверка при регистрации
     * @param login логин на входе
     * @return результат проверки
     * @throws IOException
     */
    public boolean isUserExist(String login) {
        boolean userExist = false;
        for (User user:userList){
            if(user.getLogin().equals(login))
            userExist = true;
        }
        return userExist;
    }

    public String getAdminInfo(User user){
        if(user.getLogin().equals("admin")){
            StringBuilder infoBuilder = new StringBuilder(100);
            DOMUserSessionParser sessionParser = new DOMUserSessionParser();
            for(User simpleUser:userList){
                int sessionPoints=sessionParser.getPoints(simpleUser);
                infoBuilder.append(String.format("User %s - have %d correct answers<br>",simpleUser.getLogin(),sessionPoints));

            }
            return infoBuilder.toString();
        }else {
            return "Congratulations. You crash the system!:)";
        }
    }

}
